package com.ruoyi.system.mapper;

import java.util.List;

import com.ruoyi.system.domain.TbProductPackage;
import com.ruoyi.system.domain.TbProductPackageAssociation;
import com.ruoyi.system.domain.vo.ProductQuantity;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 套餐管理Mapper接口
 * 
 * @author ruoyi
 * @date 2024-09-09
 */

@Mapper
public interface TbProductPackageMapper 
{
    /**
     * 查询套餐管理
     *
     * @param packageId 套餐管理主键
     * @param tableName
     * @return 套餐管理
     */
    public TbProductPackage selectTbProductPackageByPackageId(@Param("tableName")String tableName,@Param("packageId")Long packageId);

    /**
     * 查询套餐管理列表
     *
     * @param tbProductPackage 套餐管理
     * @param tableName
     * @param merchantId
     * @param storeId
     * @return 套餐管理集合
     */
    public List<TbProductPackage> selectTbProductPackageList(TbProductPackage tbProductPackage);

    /**
     * 新增套餐管理
     * 
     * @param tbProductPackage 套餐管理
     * @return 结果
     */
    public int insertTbProductPackage(TbProductPackage tbProductPackage);

    /**
     * 修改套餐管理
     * 
     * @param tbProductPackage 套餐管理
     * @return 结果
     */
    public int updateTbProductPackage(TbProductPackage tbProductPackage);

    /**
     * 删除套餐管理
     *
     * @param packageId 套餐管理主键
     * @param tableName
     * @return 结果
     */
    public int deleteTbProductPackageByPackageId(@Param("tableName") String tableName,@Param("packageId")Long packageId);

    /**
     * 批量删除套餐管理
     *
     * @param packageIds 需要删除的数据主键集合
     * @param tableName
     * @return 结果
     */
    public int deleteTbProductPackageByPackageIds(@Param("tableName") String tableName,@Param("packageIds")Long[] packageIds);

    int configureTbProductPackage(@Param("tableName") String tableName,@Param("packageId") int packageId,
                                  @Param("productQuantities") List<ProductQuantity> productQuantities);

    public List<TbProductPackageAssociation> selectAssociationList(@Param("tableName") String tableName,@Param("packageId") int packageId);


    int delPackageProduct(@Param("tableName") String tableName,@Param("packageId") int packageId);
}
